﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SistemaGO_Library.Entidades.Categoria
{
    class CadastroCategoria
    {
        private IRepositorioCategoria categorias;

        public CadastroCategoria(IRepositorioCategoria repCat){
            this.categorias = repCat;
        }

        public void inserirCategoria(Categoria cat) {
            if (cat != null && !categorias.existeCategoria(cat.Categoria_cod)) {
                categorias.inserirCategoria(cat);
            } else {
                throw new Exception("Categoria Já Existente ou Nula");
            }
        }

        public Categoria buscarCategoria(int cod) {
            Categoria cat = new Categoria();
            cat = null;
            if (categorias.existeCategoria(cod)) {
                cat = categorias.buscarCategoria(cod);
            } else {
                throw new Exception("Categoria Não Encontrada");
            }
            return cat;
        }

        public void alterarCategoria(int cod, Categoria novaCategoria) {
            if (categorias.existeCategoria(cod)) {
                categorias.alterarCategoria(cod, novaCategoria);
            } else {
                throw new Exception("Erro ao alterar categoria");
            }
        }

        public void excluirCategoria(int cod) {
            if (cod < 0) {
                throw new Exception("Erro ao excluir categoria");
            } else {
                categorias.excluirCategoria(cod);
            }
        }

        public int buscarCodigoCategoria() {
            return categorias.buscarCodigoCategoria();
        }

        public string[] buscarNomesCategorias() {
            return categorias.buscarNomesCategorias();
        }

        public int buscarCodigoCategoriaPorNome(string categoria) {
            return categorias.buscarCodigoCategoriaPorNome(categoria);
        }
    }
}
